﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using Entidades.Sistema.Venta;
using Mapping.Sistema.Venta;

namespace Modelo.Sistema.Venta
{
    public class CatalogoTipoProducto
    {
        
        private List<TipoProducto> ColTipoProductos;

        public CatalogoTipoProducto()
        {
            ColTipoProductos = MappingTipoProducto.ConsultarTipoProductos();
        }

        public ReadOnlyCollection<TipoProducto> ListarTipoProductos()
        {
            return ColTipoProductos.AsReadOnly();
        }

        public TipoProducto BuscarTipoProducto(int idTipoProd)
        {
            return this.ColTipoProductos.Find(oPerm => oPerm.IdTipoProducto == idTipoProd);
        }

        public bool AgregarTipoProducto(TipoProducto oTipoProducto)
        {
            ColTipoProductos.Add(oTipoProducto);
            return Mapping.Sistema.Venta.MappingTipoProducto.AgregarTipoProducto(oTipoProducto);
        }

        public void ModificarTipoProducto(TipoProducto oTipoProducto)
        {
            Mapping.Sistema.Venta.MappingTipoProducto.ModificarTipoProducto(oTipoProducto);
            ColTipoProductos.RemoveAll(x => x.IdTipoProducto == oTipoProducto.IdTipoProducto);
            ColTipoProductos.Add(oTipoProducto);
        }

        public void EliminarTipoProducto(TipoProducto oTipoProducto)
        {
            Mapping.Sistema.Venta.MappingTipoProducto.EliminarTipoProducto(oTipoProducto);
            ColTipoProductos.Remove(oTipoProducto);
        }

        public bool ValidarExistencia(TipoProducto oTipoProducto)
        {
            if (this.ColTipoProductos.Count(oForm => oForm.IdTipoProducto == oTipoProducto.IdTipoProducto) == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
